1. Field of the Invention
Embodiments of the present invention relate to the field of network computing. Specifically, embodiments of the present invention relate to a method for performing input processing a data packet.
2. Related Art
Modern network computing allows great benefits by sharing information and computing resources. Information is transmitted within networks between computers in packets, wherein the data is packaged with destination and origin information promulgated by a packet header to effectuate proper routing. Routing is effectuated by routers and switches operating in the network environment, which use the header information to route the packet to the intended destination. Packets have different priorities, as for processing precedence, preference, or primacy.
Packet priorities differ because some packets are more important than others. High priority packets may be time critical, as for example packets transmitting real time voice or other data. Other high priority packets may have their high priorities because they originate from sources that have paid a premium or subscribed to a data transfer medium offering a higher priority and/or transfer rate. Other packets may have lower priorities. Some packets, such as those transferring normal email, are not especially time sensitive and thus do not need elevated priorities.
Upon receipt at a destination device, packets are buffered within designated regions of a memory, such as an input memory, while awaiting transfer between ports and input/output (I/O) devices. Such buffer storage temporarily holds packets until a program is ready to deal with their data, or for transfer to another unsynchronized device, or one having a different data transfer rate. Memories effectuating such buffer storage are structured to have a number of queues, each queue for storing packets of different processing or other priority.
Conventional packet queuing assigns a packet to a queue in an input memory, thereby prioritizing the packet therein, on the basis of limited information. Often, the only information conventionally designating a packet for queuing is a virtual local area network (VLAN) class of service (COS) value, usually constituted by three bits. The COS value simply declares a packet to be of a particular priority on the basis of a designation assigned at its source. However, virtually no other decoding of the packet takes place prior to processing, which conventionally occurs downstream of the input memory.
With reference to Prior Art FIG. 1, a typical conventional input stage is described. An input packet 10 is placed into one of five queues 17 through 21 within an input memory serving as a packet buffer 12 based on its priority. Highest priority packets are placed in queue 17. The next highest priority packets are placed in queue 18, and so forth until the lowest priority packets are placed in queue 21. These packet priorities are defined by the packets' COS values. In certain instances, this may result in a sub-optimal choice of input memory queue. Sub-optimal input memory queue assignment may result in initially misqueuing a packet, which can delay further processing.
Certain switches are strictly output buffered. These rely on fixed rate forwarding lookups. Delay in determining the correct queuing for the packet requires restriction in forward latency. Such restricted forward latency may result in dropping incoming packets. If forward latency is restricted with resulting delays in system performance, data may be further delayed or lost. Hence, queuing choices restricting forward latency or otherwise increasing the time required for processing may also cause further delays or loss of data due to resulting packet drops.
Prior art solutions have been somewhat problematic therefore, because they may result in misqueuing data packets, thus reducing buffering efficiency, delaying processing, and possibly dropping packets, which can add further delays.